package com.uuah.server.busi.vbirth.common.transformer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.uuah.server.api.IUuahMessage;
import com.uuah.server.exception.transformer.TransformerException;
import com.uuah.server.transformer.AbstractMessageAwareTransformer;

public class RequestTransformer extends AbstractMessageAwareTransformer {
	private static Logger logger = LoggerFactory
			.getLogger(RequestTransformer.class);

	@Override
	public Object transform(IUuahMessage message, String outputEncoding)
			throws TransformerException {
		logger.debug("==BusiRequestTransformer transform==");
//		SkyBusiMessage skyBusiMessage = (SkyBusiMessage) message.getPayload();
//		int code = skyBusiMessage.getCode();
//		String entity_method = SkyPropertyUtils.getSkyBusiCodeConfigProp()
//				.getProperty(String.valueOf(code));
//		String[] array = StringUtils.split(entity_method, "_");
//		message.setStringProperty(Constants.SKY_METHOD_PROPERTY, array[1]);
//		byte[] data = skyBusiMessage.getSkyBusiMessageBody();
//
//		try {
//			Object object = ClassUtils.instanciateClass(array[0], null);
//			org.springframework.beans.BeanUtils.copyProperties(skyBusiMessage,
//					object, new String[] { "serialVersionUID",
//							"skyBusiMessageBody" });
//
//			Field[] fields = object.getClass().getDeclaredFields();
//			Arrays.sort(fields, new SkyMessageFieldComparator());
//			for (Field field : fields) {
//				if (data.length > 0) {
//					SkyMessageField skyMessageField = field
//							.getAnnotation(SkyMessageField.class);
//					if (skyMessageField != null) {
//						int byteLength = skyMessageField.byteLength();
//						if (byteLength == 0) {
//							// ȡ�ַ�
//							int index = ArrayUtils.indexOf(data, (byte) 0x00);
//							byte[] tmp = ArrayUtils.subarray(data, 0, index);
//							BeanUtils.copyProperty(object, field.getName(),
//									new String(tmp, SkyServer.getSkyContext()
//											.getConfiguration()
//											.getDefaultEncoding()));
//							byteLength = tmp.length + 1;
//						} else {
//							byte[] tmp = ArrayUtils.subarray(data, 0,
//									byteLength);
//							if (field.getType().equals(String.class)) {
//								// ֧��String ����
//								BeanUtils.copyProperty(object, field.getName(),
//										new String(tmp, "UTF-8"));
//							} else if (field.getType().equals(Integer.class)
//									|| field.getType().equals(Long.class)
//									|| field.getType().equals(Byte.class)
//									|| field.getType().equals(int.class)
//									|| field.getType().equals(long.class)
//									|| field.getType().equals(byte.class)) {
//								BeanUtils.copyProperty(object, field.getName(),
//										SkyUtils.byteArraytoInt(tmp));
//							} else if (field.getType().equals(byte[].class)
//									|| field.getType().equals(Byte[].class)) {
//								BeanUtils.copyProperty(object, field.getName(),
//										tmp);
//							}// // ��������
//						}
//						data = ArrayUtils.subarray(data, byteLength,
//								data.length);
//					}
//				}
//			}
//			message.setPayload(object);
//			message.setLongProperty(Constants.REQUEST_DECODE_TIME, System
//					.currentTimeMillis());
//		} catch (Exception e) {
//			logger.error("{}", e);
//		}

//		return message;
		return null;
	}
}
